From ed627e08bdc16618e83941a1e3526434319fccb9 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 22 May 1994 20:55:15 +0000 Subject: [PATCH] (posn-col-row): Do something useful for scroll bar event. --- lisp/subr.el | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index b5b7a8d620d..c281a64843d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -420,17 +420,27 @@ POSITION should be a list of the form as returned by the `event-start' and `event-end' functions." (nth 2 position)) -(defsubst posn-col-row (position) - "Return the column and row in POSITION, measured in characters. +(defun posn-col-row (position) + "Return the row and column in POSITION, measured in characters. POSITION should be a list of the form (WINDOW BUFFER-POSITION (X . Y) TIMESTAMP) -as returned by the `event-start' and `event-end' functions." - (let* ((pair (nth 2 position)) - (window (posn-window position)) - (frame (if (framep window) window (window-frame window))) - (x (/ (car pair) (frame-char-width frame))) - (y (/ (cdr pair) (frame-char-height frame)))) - (cons x y))) +as returned by the `event-start' and `event-end' functions. +For a scroll-bar event, the result column is 0, and the row +corresponds to the vertical position of the click in the scroll bar." + (let ((pair (nth 2 position)) + (window (posn-window position))) + (if (eq (if (symbolp (nth 1 position)) (nth 1 position) + (car (nth 1 position))) + 'vertical-scroll-bar) + (cons 0 (scroll-bar-scale pair (1- (window-height window)))) + (if (eq (if (symbolp (nth 1 position)) (nth 1 position) + (car (nth 1 position))) + 'horizontal-scroll-bar) + (cons (scroll-bar-scale pair (window-width window)) 0) + (let ((frame (if (framep window) window (window-frame window))) + (x (/ (car pair) (frame-char-width frame))) + (y (/ (cdr pair) (frame-char-height frame)))) + (cons x y)))))) (defsubst posn-timestamp (position) "Return the timestamp of POSITION. -- 2.30.2